//
// Description: 2262. 字符串的总引力
// Created by Loading on 2022/5/4.
//

#include <bits/stdc++.h>

using namespace std;

long long appealSum(string s) {
    long long res = 0;
    // 每个字母出现的最后一次的下标，初始化为 -1
    vector<int> index(26, -1);
    int n = s.size();
    // sum 表示以当前位置结尾的引力之和
    for (int i = 0, sum = 0; i < n; ++i) {
        int offset = s[i] - 'a';
        /* 若当前字符未出现过，则所有子串引力都加 1，且 index[offset] 正好为 -1，累加 i - index[offset] 即可 */
        /* 若当前字符出现过，则只有出现过的位置往后与当前字符组成的子串加 1，仍然累加 i - index[offset] */
        sum += i - index[offset];
        res += sum;
        index[offset] = i;
    }

    return res;
}

int main() {
    string s = "abcdc";
    auto res = appealSum(s);
    cout << res << endl;

    return 0;
}